/* Includes ------------------------------------------------------------------*/
#include "stm32f2xx.h"
#include "led.h"

void led_init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_AHB1PeriphClockCmd(	LED1_GPIO_CLK | 
    LED2_GPIO_CLK |
    LED3_GPIO_CLK |
    LED4_GPIO_CLK, ENABLE);

    GPIO_DeInit(LED1_GPIO_PORT); 
    GPIO_DeInit(LED2_GPIO_PORT); 
    GPIO_DeInit(LED3_GPIO_PORT); 
    GPIO_DeInit(LED4_GPIO_PORT); 

    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;
    
    GPIO_InitStructure.GPIO_Pin = LED1_GPIO_PIN;
    GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = LED2_GPIO_PIN ;
    GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = LED3_GPIO_PIN ;
    GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = LED4_GPIO_PIN ;
    GPIO_Init(LED4_GPIO_PORT, &GPIO_InitStructure);
}

int turn_on(int n)
{
	switch(n)
	{
        case 1:
            GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
            return 1;
        case 2:
            GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_PIN);
            return 1;
        case 3:
            GPIO_SetBits(LED3_GPIO_PORT, LED3_GPIO_PIN);
            return 1;
        case 4:
            GPIO_SetBits(LED4_GPIO_PORT, LED4_GPIO_PIN);
            return 1;
        default: 
            return 0;
	}
}


int turn_off(int n)
{
	switch(n)
	{
        case 1:
            GPIO_ResetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);
            return 1;
        case 2:
            GPIO_ResetBits(LED2_GPIO_PORT, LED2_GPIO_PIN);
            return 1;
        case 3:
            GPIO_ResetBits(LED3_GPIO_PORT, LED3_GPIO_PIN);
            return 1;
        case 4:
            GPIO_ResetBits(LED4_GPIO_PORT, LED4_GPIO_PIN);
            return 1;
        default : 
            return 0;	 
	}
}

int test_led()
{
    led_init();
    turn_on(1);
    turn_on(2);
    turn_on(3);
    turn_on(4);
    while(1)
    {
    }  
}
